INNER JOIN क्या हैं?
INNER JOIN कीवर्ड दोनों तालिकाओं में मेल खाने वाले मानों वाले रिकॉर्ड का चयन करता है।
आइए उत्पाद तालिका से चयन पर एक नज़र डालें:
उत्पाद तालिका
+-----------+----------------+------------+-------+
| ProductID | ProductName | CategoryID | Price |
+-----------+----------------+------------+-------+
| 1 | Chais | 1 | 18 |
| 2 | Chang | 1 | 19 |
| 3 | Aniseed Syrup | 2 | 10 |
+-----------+----------------+------------+-------+
और आइए श्रेणियाँ तालिका से एक चयन देखें:
श्रेणियाँ तालिका
+------------+----------------+----------------------------------------------------+
| CategoryID | CategoryName | Description |
+------------+----------------+----------------------------------------------------+
| 1 | Beverages | Soft drinks, coffees, teas, beers, and ales |
| 2 | Condiments | Sweet and savory sauces, relishes, spreads, etc. |
| 3 | Confections | Desserts, candies, and sweet breads |
+------------+----------------+----------------------------------------------------+
आइए दोनों तालिकाओं से CategoryID फ़ील्ड का उपयोग करके उत्पाद तालिका को श्रेणियाँ तालिका के साथ जोड़ें:
उदाहरण
INNER JOIN कीवर्ड का उपयोग करके उत्पादों और श्रेणियों से जुड़ें:
SELECT ProductID, ProductName, CategoryName
FROM Products
INNER JOIN Categories ON Products.CategoryID = Categories.CategoryID;
नोट:
INNER JOIN कीवर्ड केवल मेल खाने वाली मानों वाली पंक्तियाँ लौटाता है। इसका मतलब यह है कि यदि आपके पास कोई श्रेणी आईडी वाला ऑब्जेक्ट है, या श्रेणी आईडी वाला कोई ऑब्जेक्ट है जो श्रेणियां तालिका में नहीं है, तो वह रिकॉर्ड अंत में वापस नहीं किया जाएगा।
वाक्यविन्यास
SELECT column_name(s)
FROM table1
INNER JOIN table2
ON table1.column_name = table2.column_name;
स्तम्भों का नामकरण
SQL कथन में कॉलम निर्दिष्ट करते समय तालिका नाम शामिल करना एक अच्छा अभ्यास है।
उदाहरण
तालिका नाम निर्दिष्ट करें:
SELECT Products.ProductID, Products.ProductName, Categories.CategoryName
FROM Products
INNER JOIN Categories ON Products.CategoryID = Categories.CategoryID;
नोट:
उपरोक्त उदाहरण तालिका नामों को निर्दिष्ट किए बिना काम करता है क्योंकि किसी भी तालिका में कोई भी निर्दिष्ट कॉलम नाम मौजूद नहीं है। यदि आप SELECT कथन में CategoryID जोड़ने का प्रयास करते हैं, तो यदि आप तालिका नाम निर्दिष्ट नहीं करते हैं तो आपको एक त्रुटि मिलेगी (क्योंकि CategoryID दोनों तालिकाओं में है)।
जॉइन या इनर जॉइन
जॉइन और इनर जॉइन एक ही परिणाम देते हैं।
JOIN के लिए INNER डिफ़ॉल्ट जॉइन प्रकार है, इसलिए जब आप JOIN लिखते हैं, तो पार्सर वास्तव में INNER JOIN लिखता है।
उदाहरण
जॉइन इनर जॉइन के बराबर है:
SELECT Products.ProductID, Products.ProductName, Categories.CategoryName
FROM Products
JOIN Categories ON Products.CategoryID = Categories.CategoryID;
तीन तालिकाओं को जोड़ें
निम्नलिखित SQL कथन ग्राहक और शिपर जानकारी के साथ सभी ऑर्डर का चयन करता है:
यहाँ शिपर्स तालिका है:
शिपर्स शेड्यूल
+-----------+-------------------+------------------+
| ShipperID | ShipperName | Phone |
+-----------+-------------------+------------------+
| 1 | Speedy Express | (503) 555-9831 |
| 2 | United Package | (503) 555-3199 |
| 3 | Federal Shipping | (503) 555-9931 |
+-----------+-------------------+------------------+
उदाहरण
SELECT Orders.OrderID, Customers.CustomerName, Shippers.ShipperName
FROM ((Orders
INNER JOIN Customers ON Orders.CustomerID = Customers.CustomerID)
INNER JOIN Shippers ON Orders.ShipperID = Shippers.ShipperID);
समझ:
यह उदाहरण दिखाता है कि तीन तालिकाओं को कैसे जोड़ा जाए। पहले ऑर्डर और ग्राहकों को जोड़ा जाता है, फिर परिणाम को शिपर्स तालिका में जोड़ा जाता है।
इनर जॉइन का दृश्य प्रतिनिधित्व
उत्पाद तालिका
श्रेणियाँ तालिका
इनर जॉइन परिणाम
टिप्पणी:चूँकि CategoryID = 3 वाला कोई उत्पाद नहीं है, परिणाम में "कन्फेक्शन" श्रेणी दिखाई नहीं देगी।